public class code2 {
//    力扣 150 相同的树
public boolean isSameTree(TreeNode p, TreeNode q) {
    // 要比较两个树是否相同，可以通过队列的形式对两个树节点上的值进行记录比较
    // 同时存入，同时取出。以此来判断这里的值是否符合判断条件。

    // 这里使用广度优先搜索 (先序遍历 根 ——> 左 ——> 右)

    // 首先创建出一个队列用来存储当前的元素
    Queue<TreeNode> queue = new LinkedList<TreeNode>();
    // 首先将两个根节点都先存储到优先级队列中
    queue.offer(p);
    queue.offer(q);
    while(!queue.isEmpty()) {
        // 根 进行弹出
        p = queue.poll();
        q = queue.poll();
        // 当两个位置的值都为 null 时，此时就说明已经到达树的某一个节点为 null 的地方，此时直接返回跳过此次循环
        if(p == null && q == null) {
            continue;
        }
        // 如果存在当前的 val 值不等。此时直接返回 false 表明不符合题意
        if((p == null || q == null) || p.val != q.val) {
            return false;
        }
        // 左存入
        queue.offer(p.left);
        queue.offer(q.left);

        // 右存入
        queue.offer(p.right);
        queue.offer(q.right);
    }
    return true;
}
}
